// pages/analysis_result/analysis_result.js
Page({
    // circleContent: "circleContent", // 假设圆内的内容为 5
    /**
     * 页面的初始数据
     */
    data: {
        schoolName: "",
        department: "",
        majorName: "",
        msg: "",
        level: "",
        politicalAvg: "",
        foreignLanguageAvg: "",
        majorCourseOneAvg: "",
        majorCourseTwoAvg: "",
        totalAvg: "",
        admissionMin: "",
        politicalScore: "",
        foreignLanguageScore: "",
        majorCourseOneScore: "",
        majorCourseTwoScore: "",
        data1: {
            schoolName: "",
            department: "",
            majorName: "",
            politicalAvg: "",
            foreignLanguageAvg: "",
            majorCourseOneAvg: "",
            majorCourseTwoAvg: "",
            totalAvg: "",
            admissionMin: ""
        },
        data2: {}

    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        wx.getSystemInfo({
            success: (res) => {
                const screenWidth = res.windowWidth;
                const canvasWidth = screenWidth - 20; // 适配屏幕宽度
                const canvasHeight = 300; // 画布高度
                const ctx = wx.createCanvasContext('barCanvas');

                // 柱子相关参数
                const barWidth = 20; // 柱子宽度
                const barSpacing = 10; // 柱子间距
                const barHeightMultiplier = 1; // 柱子高度的倍数
                console.log(this.data.data1.data);
                const wc = this.data.data1.data;
                console.log(wc[0].year);
                const wcn = this.data.data2;
                console.log(wcn)
                const newdata = [{
                        value1: wcn.politicalAvg,
                        value2: wc[0].politicalAvg,
                        label: "政治"
                    },
                    {
                        value1: wcn.foreignLanguageAvg,
                        value2: wc[0].foreignLanguageAvg,
                        label: "外语"
                    },
                    {
                        value1: wcn.majorCourseOneAvg,
                        value2: wc[0].majorCourseOneAvg,
                        label: "专业课一"
                    },
                    {
                        value1: wcn.majorCourseTwoAvg,
                        value2: wc[0].majorCourseTwoAvg,
                        label: "专业课二"
                    }
                ];
                // 数据

                // 计算每对柱子的起始位置
                const startX = 20;
                const startY = 200;
                const numPairs = newdata.length; // 柱子对数
                const totalWidth = numPairs * (barWidth * 2 + barSpacing); // 总宽度
                const startXs = [];
                for (let i = 0; i < numPairs; i++) {
                    startXs.push(startX + i * (barWidth * 2 + barSpacing) * 2);
                }

                // 计算纵坐标最大值
                const maxY = 200;

                // 绘制柱状图
                for (let i = 0; i < numPairs; i++) {
                    const height1 = Math.min(newdata[i].value1 * barHeightMultiplier, maxY); // 限制柱子高度在画布范围内
                    const height2 = Math.min(newdata[i].value2 * barHeightMultiplier, maxY); // 限制柱子高度在画布范围内
                    const x1 = startXs[i];
                    const x2 = x1 + barWidth + barSpacing;
                    const y1 = startY - height1;
                    const y2 = startY - height2;

                    // 设置柱子颜色
                    ctx.fillStyle = '#FF0000'; // 第一个柱子红色
                    ctx.fillRect(x1, y1, barWidth, height1); // 绘制第一个柱子
                    ctx.fillStyle = '#0000FF'; // 第二个柱子蓝色
                    ctx.fillRect(x2, y2, barWidth, height2); // 绘制第二个柱子

                    // 绘制文字说明
                    ctx.font = '12px Arial';
                    ctx.fillText(newdata[i].label, x1, startY + 20); // 绘制柱子下方的文字说明
                    ctx.fillText(newdata[i].value1, x1, y1 - 5); // 绘制第一个柱子的数据
                    ctx.fillText(newdata[i].value2, x2, y2 - 5); // 绘制第二个柱子的数据
                }

                // 绘制纵坐标最大值
                ctx.font = '12px Arial';
                ctx.fillText(maxY.toString(), startX - 30, startY - maxY); // 绘制纵坐标最大值

                ctx.draw();
                const ctx2 = wx.createCanvasContext('barCanvas2');
                const sum = parseInt(wcn.politicalAvg) + parseInt(wcn.foreignLanguageAvg
                    ) + parseInt(wcn.majorCourseOneAvg
                        ) + parseInt(wcn.majorCourseTwoAvg);

                // 数据
                const newdata2 = [{
                        value1: wc[0].admissionMin,
                        label: "最低录取分"
                    },
                    {
                        value1: sum,
                        label: "总分"
                    },
                    {
                        value1: wc[0].totalAvg,
                        label: "总分平均分"
                    }
                ];

                // 将纵坐标最大值设为 500
                const maxAxisValue = 500;

                // 计算柱子的位置
                const totalBarWidth2 = barWidth + barSpacing * 3; // 调整柱子的间隔
                const startX2 = (canvasWidth - (barWidth * newdata2.length + (barSpacing * 3 * (newdata2.length - 1)))) / 2;

                // 绘制柱子和文字
                newdata2.forEach((data, index) => {
                    const barHeight = (data.value1 / maxAxisValue) * canvasHeight; // 根据最大值计算柱子高度
                    // 计算当前柱子的位置
                    const currentX2 = startX2 + index * totalBarWidth2;
                    // 绘制柱子
                    ctx2.setFillStyle('#336699');
                    ctx2.fillRect(currentX2, canvasHeight - barHeight, barWidth, barHeight);
                    // 绘制文字
                    ctx2.setFillStyle('#000000');
                    ctx2.setFontSize(12);
                    // 计算文字宽度
                    const textWidth = ctx2.measureText(data.label).width;
                    // 绘制文字并调整位置使其居中于柱子
                    ctx2.fillText(data.label, currentX2 + (barWidth - textWidth) / 2, canvasHeight + 15);
                    // 绘制柱子上方的value1  
                    ctx2.fillText(data.value1, currentX2 + (barWidth / 2), canvasHeight - barHeight - 10); // 调整为上方，并减去柱子高度的一半和一些额外间距
                    // 绘制柱子下方的value1
                    ctx2.fillText(data.value1, currentX2 + (barWidth / 2), canvasHeight + 30); // 调整为下方，并增加一些间距
                });

                // 绘制完成
                ctx2.draw();






            }

        });
    },


    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onLoad: function (options) {
        // console.log("anay")
        // console.log(options)
        // 获取传递过来的数据
        // 在这里可以处理传递过来的数据
        const da = JSON.parse(decodeURIComponent(options.da));
        const pastscore = JSON.parse(decodeURIComponent(options.pastscore));
        console.log(da)
        console.log(pastscore)

        this.setData({
            data1: JSON.parse(da),
            data2: pastscore
        }, () => {
            console.log(this.data.data1.data);
            console.log(this.data.data1.msg);
            console.log(this.data.data2);
        })


        // 原始消息
        // / 原始消息
        let msg = this.data.data1.msg; // 获取data1中的msg
    
        // 获取msg最后三个字符并赋值给level，同时在msg中删除这三个字符
        let level = msg.slice(-3);
        msg = msg.slice(0, -3).replace(/\s*；\s*$/, ''); // 删除msg末尾的三个字符和分号及空格
    
        // 更新level和msg
        this.setData({
          'level': level,
          'data1.msg': msg,
        });
    
        console.log("提取的数字部分为:", this.data.level);
        console.log("更新后的消息为:", this.data.data1.msg);
  

        // 打印 data 中的内容
        // console.log(this.data.data1);

        // 在这里处理传递过来的数据
        // console.log(da)
        // console.log(pastscore)
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})